CI/CD (Continuous Integration / Continuous Deployment) উন্নত সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়া এবং অটোমেটেড টেস্টিং এবং ডেপ্লয়মেন্ট প্রক্রিয়া সরবরাহ করে। GitHub Actions হল একটি শক্তিশালী টুল যা GitHub রেপোজিটরি ব্যবহার করে CI/CD পিপলাইন তৈরি করতে সাহায্য করে। এখানে, আমরা FastAPI অ্যাপের জন্য GitHub Actions ব্যবহার করে CI/CD সেটআপ করার প্রক্রিয়া দেখাব।
Step 1: GitHub রেপোজিটরি তৈরি করা
প্রথমে, একটি GitHub রেপোজিটরি তৈরি করতে হবে (যদি ইতিমধ্যেই না থাকে) যেখানে আপনার FastAPI অ্যাপ কোড সংরক্ষিত থাকবে।
- GitHub-এ একটি নতুন রেপোজিটরি তৈরি করুন।
- আপনার FastAPI অ্যাপের কোড এই রেপোজিটরিতে আপলোড করুন (পুশ করুন)।
Step 2: GitHub Actions এর জন্য Workflow ফাইল তৈরি করা
GitHub Actions CI/CD পিপলাইন তৈরি করতে আপনাকে একটি workflow ফাইল তৈরি করতে হবে। এই ফাইলটি .github/workflows/ ফোল্ডারে থাকবে।
উদাহরণ: .github/workflows/ci-cd.yml
name: FastAPI CI/CD
on:
push:
branches:
- main # 'main' ব্রাঞ্চে পুশ হলে ট্রিগার হবে
pull_request:
branches:
- main # 'main' ব্রাঞ্চে পুল রিকোয়েস্ট হলে ট্রিগার হবে
jobs:
build:
runs-on: ubuntu-latest
steps:
# Step 1: Checkout the code from GitHub
- name: Checkout repository
uses: actions/checkout@v2
# Step 2: Set up Python environment
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9' # Python 3.9 ব্যবহার করা হচ্ছে, তবে এটি আপনার প্রয়োজন অনুসারে পরিবর্তন করতে পারেন
# Step 3: Install dependencies
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
# Step 4: Run tests with pytest
- name: Run tests
run: |
pytest # এখানে আপনার টেস্ট ফাইল চালানো হচ্ছে
# Step 5: Build and Deploy (যদি ডেপ্লয়মেন্ট অন্তর্ভুক্ত থাকে)
- name: Deploy to Production
run: |
# এখানে আপনার ডেপ্লয়মেন্ট স্ক্রিপ্ট বা কমান্ড থাকবে
echo "Deploying to production..."
ফাইলের ব্যাখ্যা:
on:: এই অংশটি বলে দেয় কখন এই workflow চালানো হবে। এখানে, যখনmainব্রাঞ্চে পুশ বা পুল রিকোয়েস্ট হবে, তখন এটি ট্রিগার হবে।jobs:: এখানে বিভিন্ন কাজ (jobs) এবং স্টেপস ডিফাইন করা হয়েছে।build:: এই কাজটি একটিubuntu-latestভার্চুয়াল মেশিনে চলবে।checkout: কোড GitHub থেকে চেকআউট করবে।setup-python: Python পরিবেশ সেটআপ করবে।Install dependencies:requirements.txtফাইল থেকে সমস্ত ডিপেনডেন্সি ইনস্টল করবে।Run tests:pytestব্যবহার করে টেস্ট চালাবে।Deploy: আপনার অ্যাপ্লিকেশন ডেপ্লয় করার জন্য স্ক্রিপ্ট চালাবে। এটি একটি ডেমো কমান্ড, আপনি এটি আপনার ডেপ্লয়মেন্ট পদ্ধতির সাথে পরিবর্তন করবেন (যেমন Heroku, AWS, Docker ইত্যাদি)।
Step 3: Requirements ফাইল তৈরি করা
requirements.txt ফাইলটি তৈরি করুন যাতে আপনার FastAPI অ্যাপের সমস্ত ডিপেনডেন্সি থাকে। উদাহরণস্বরূপ:
fastapi
uvicorn
pytest
এটি GitHub Actions এর মাধ্যমে dependencies ইনস্টল করতে ব্যবহৃত হবে।
Step 4: টেস্ট ফাইল তৈরি করা
টেস্টিং নিশ্চিত করতে pytest ব্যবহার করুন। একটি সাধারণ টেস্ট ফাইল তৈরি করুন, যেমন:
# test_main.py
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_read_main():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"message": "Hello, World!"}
এই টেস্ট ফাইলটি FastAPI অ্যাপের জন্য একটি বেসিক টেস্ট। এটি GitHub Actions-এ চলবে যখন আপনার কোড পুশ হবে।
Step 5: GitHub Actions চালানো
এখন আপনি যখন GitHub রেপোজিটরিতে main ব্রাঞ্চে কোড পুশ করবেন বা পুল রিকোয়েস্ট করবেন, তখন GitHub Actions স্বয়ংক্রিয়ভাবে ট্রিগার হবে এবং workflow চালানো শুরু হবে।
আপনার GitHub রেপোজিটরি > Actions ট্যাব থেকে আপনি টেস্ট, বিল্ড, এবং ডেপ্লয়মেন্ট প্রসেসের স্ট্যাটাস দেখতে পারবেন।
Step 6: Production Deployment (অপশনাল)
যদি আপনি ডেপ্লয়মেন্ট অন্তর্ভুক্ত করতে চান, তবে GitHub Actions এর মধ্যে আপনার ডেপ্লয়মেন্ট স্ক্রিপ্ট যোগ করতে হবে। এটি সাধারণত আপনার সার্ভার বা ক্লাউড সেবা (যেমন AWS, Heroku, Docker) এর জন্য একটি স্ক্রিপ্ট হবে।
উদাহরণ: Heroku তে ডেপ্লয়মেন্ট
- name: Deploy to Heroku
uses: akshnz/heroku-deploy@v1
with:
heroku_email: ${{ secrets.HEROKU_EMAIL }}
heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
heroku_app_name: your-app-name
এই অংশে, আপনার Heroku অ্যাপের নাম এবং API কী GitHub Secrets ব্যবহার করে ইনজেক্ট করা হয়েছে।
GitHub Actions ব্যবহার করে FastAPI অ্যাপের জন্য CI/CD পিপলাইন সেটআপ করা একটি সহজ এবং শক্তিশালী উপায়। এটি কোডের স্বয়ংক্রিয় টেস্টিং, বিল্ড এবং ডেপ্লয়মেন্ট প্রক্রিয়া সঞ্চালন করতে সাহায্য করে। GitHub Actions এর মাধ্যমে, আপনি সেরা DevOps প্র্যাকটিস অনুসরণ করে স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন ডেপ্লয় করতে পারেন এবং ডেভেলপমেন্ট প্রক্রিয়া আরও কার্যকরী ও স্কেলেবল করতে পারেন।
Read more